﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using DataAnnotationsExtensions;
using System.Globalization;
using System.Web.Mvc;



namespace JPSOFTWARE.BON.Modelos
{
    public class DistribuidoraIncluirModel
    {
        [HiddenInput(DisplayValue = false)]
        public int IdDistribuidora { get; set; }

        [HiddenInput(DisplayValue = false)]
        public int IdUsuario { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        //[Remote("ValidarCNPJ", "Distribuidora", HttpMethod="POST", ErrorMessage="CNPJ inválido." )]
        [Remote("VerificaSeExisteCNPJ", "Distribuidora", HttpMethod = "POST", ErrorMessage = "CNPJ já cadastrado.")]        
        [Display(Name = "CNPJ:*")]
        public string Cnpj { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Nome da distribuidora:")]
        [StringLength(70, ErrorMessage = "Execedeu número de caracteres.")]
        public string NomeDistribuidora { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Descrição:*")]
        [StringLength(1000, ErrorMessage = "Execedeu número de caracteres.")]
        public string Descricao { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [DataType(DataType.PhoneNumber, ErrorMessage = "Número de telefone inválido")]
        [Display(Name = "Telefone:*")]
        public string Telefone { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Email(ErrorMessage = "E-mail inválido.")]
        [Display(Name = "E-mail*")]
        [StringLength(70, ErrorMessage = "Execedeu número de caracteres.")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [DataType(DataType.PhoneNumber, ErrorMessage = "Número de celular inválido")]
        [Display(Name = "Celular:*")]
        public string Celular { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(250, ErrorMessage = "Execedeu número de caracteres.")]
        [DataType(DataType.MultilineText)]
        [Display(Name = "Endereço:*")]
        public string Endereco { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(70, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "Bairro:*")]
        public string Bairro { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(50, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "Cidade:*")]
        public string Cidade { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(30, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "UF:*")]
        public string Uf { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "CEP:*")]
        [StringLength(9, ErrorMessage = "Execedeu número de caracteres.")]
        public string Cep { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Tipo de empresa:*")]
        public int TipoDistribuidora { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Status:*")]
        public int Status { get; set; }

        [Display(Name = "Latitude:*")]
        public string Latitude { get; set; }

        [Display(Name = "Longitude:*")]
        public string Longitude { get; set; }

        public DateTime DataAlteracao { get; set; }

        public UsuarioRegistrarModel UsuarioRegistrar()
        {
            return new UsuarioRegistrarModel();
        }    
    }

    public class DistribuidoraEditarModel
    {
        [HiddenInput(DisplayValue = false)]
        public int IdDistribuidora { get; set; }

        [HiddenInput(DisplayValue = false)]
        public int IdUsuario { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Remote("ValidarCNPJ", "Distribuidora", HttpMethod = "POST", ErrorMessage = "CNPJ inválido.")]
        [Display(Name = "CNPJ:*")]
        public string Cnpj { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Nome da distribuidora:")]
        [StringLength(70, ErrorMessage = "Execedeu número de caracteres.")]
        public string NomeDistribuidora { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Descrição:*")]
        [StringLength(1000, ErrorMessage = "Execedeu número de caracteres.")]
        public string Descricao { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [DataType(DataType.PhoneNumber, ErrorMessage = "Número de telefone inválido")]
        [Display(Name = "Telefone:*")]
        public string Telefone { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [DataType(DataType.PhoneNumber, ErrorMessage = "Número de celular inválido")]
        [Display(Name = "Celular:*")]
        public string Celular { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Email(ErrorMessage = "E-mail inválido.")]
        [Display(Name = "E-mail*")]
        [StringLength(70, ErrorMessage = "Execedeu número de caracteres.")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(250, ErrorMessage = "Execedeu número de caracteres.")]
        [DataType(DataType.MultilineText)]
        [Display(Name = "Endereço:*")]
        public string Endereco { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(70, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "Bairro:*")]
        public string Bairro { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(50, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "Cidade:*")]
        public string Cidade { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(30, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "UF:*")]
        public string Uf { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(9, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "CEP:*")]
        public string Cep { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Tipo de empresa:*")]
        public int TipoDistribuidora { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Status:*")]
        public bool Status { get; set; }

        [Display(Name = "Latitude:*")]
        public string Latitude { get; set; }

        [Display(Name = "Longitude:*")]
        public string Longitude { get; set; }

        public DateTime DataAlteracao { get; set; }
    }

    public class DistribuidoraModel
    {
        public int IdDistribuidora { get; set; }

        public int IdUsuario { get; set; }

        public string Cnpj { get; set; }

        public string RazaoSocial { get; set; }

        public string NomeDistribuidora { get; set; }

        public string Descricao { get; set; }

        public string Email { get; set; }

        public string Telefone { get; set; }

        public string Celular { get; set; }

        public string Endereco { get; set; }

        public string Bairro { get; set; }

        public string Cidade { get; set; }

        public string Uf { get; set; }

        public string Cep { get; set; }

        public int TipoDistribuidora { get; set; }

        public string Status { get; set; }

        public DateTime DataAlteracao { get; set; }
    }

    public class TipoDistribuidoraCombo
    {
        public int IdTipoDistribuidora { get; set; }
        public string TipoDistribuidora { get; set; }

        public List<TipoDistribuidoraCombo> TipoDistribuidoraLista()
        {
            return new List<TipoDistribuidoraCombo>();
        }
    }

    public class DistribuidoraCombo
    {
        public int IdDistribuidora { get; set; }
        public string Distribuidora { get; set; }

        public List<DistribuidoraCombo> DistribuidoraLista()
        {
            return new List<DistribuidoraCombo>();
        }
    }

    public class DistribuidoraView
    {
        [HiddenInput(DisplayValue = false)]
        public int IdDistribuidora { get; set; }

        public string Cnpj { get; set; }

        public string NomeDistribuidora { get; set; }

        public string Endereco { get; set; }

        public string Telefone { get; set; }

        public string Celular { get; set; }

        public string Email { get; set; }

        public string Bairro { get; set; }

        public string Cidade { get; set; }

        public string Estado { get; set; }

        public string Latitude { get; set; }

        public string Longitude { get; set; }

        public string CEP { get; set; }

        public string Descricao { get; set; }

        public string Status { get; set; }

        public object[] Locations { get; set; }
    }

    public class DistribuidoraMapa
    {
        public int IdDistribuidora { get; set; }

        public string NomeDistribuidora { get; set; }

        public string Descricao { get; set; }

        public string Endereco { get; set; }

        public decimal Latitude { get; set; }

        public decimal Longitude { get; set; }
    }

    public class EstadosView
    {
        public int IdEstado { get; set; }
        public string Estado { get; set; }
    }

    public class CidadeView
    {
        public int IdCidade { get; set; }
        public string Cidade { get; set; }
    }
}